Architecture Overview
Cover the overall technical architecture of Arbiter.
Components
Basically, it consists of 4 components by now, observer, scheduler, executor and a command line tool called 'abctl'.
Observer
Observer is used to collect various data(metric/log/trace), generate the OBI object, and stored as CRDs inside Kubernetes.
Refer to the Observer for details.
Scheduler Extension
Scheduler is an alternative scheduler built on top of Kubernetes default scheduler. It contains the default scheduler of Kubernetes and provide a extension point for Arbiter to extend.
For each Arbiter scheduler extension, it'll provide a context for pod scheduling, and can refer to the OBI object above. So it'll have both static and runtime data, including pod, node, metric/log/tracing from OBI, and allow user to write scheduing logic using javascript on their purpose.
Refer to the Scheduler Extension for details.
Executor
Executor is the action trigger if any rule is satisfied. Let user to invoke other service or write custom controller based on events from executor.
Refer to the Executor for details.
abctl tool
A tool to let developer or administrator to view resource data from Arbiter more easy, and can also integrate this tool to do automatic tasks from custom scripts.
Communication between components
Here is the relationship between the components above.